/**
 * 组件映射表——组件和路径的映射
 * ——通过传递name，查找到对应的组件路径，并渲染到页面上
 */
//vue的动态组件的加载函数
import { defineAsyncComponent } from 'vue';

// 定义组件加载函数的类型
type ComponentLoader = () => Promise<{ default: any }>;

// 定义组件映射表的类型结构
interface ComponentMap {
  [key :string ]: ComponentLoader;
}
const componentPage_map:ComponentMap={
    'Linelayout':()=>import('../material-components/Linelayout.vue'),
    'Button':()=>import('../material-components/Button.vue'),
    'Gridlayout':()=>import('../material-components/Gridlayout.vue'),
}

function loadComponent(name:string){
    const loader=componentPage_map[name];
    console.log(loader)
    if(!loader) throw new Error('不存在对应的组件路径')
    // return loader();
    return defineAsyncComponent(loader)
}

export default loadComponent